<!DOCTYPE html>

<html>

  <head>
    <title>Ch. 14 - Setting up your own "Manipulation Station"</title>
    <meta name="Ch. 14 - Setting up your own "Manipulation Station"" content="text/html; charset=utf-8;" />
    <link rel="canonical" href="http://manipulation.csail.mit.edu/station.html" />

    <script src="https://hypothes.is/embed.js" async></script>
    <script type="text/javascript" src="chapters.js"></script>
    <script type="text/javascript" src="htmlbook/book.js"></script>

    <script src="htmlbook/mathjax-config.js" defer></script> 
    <script type="text/javascript" id="MathJax-script" defer
      src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
    </script>
    <script>window.MathJax || document.write('<script type="text/javascript" src="htmlbook/MathJax/es5/tex-chtml.js" defer><\/script>')</script>

    <link rel="stylesheet" href="htmlbook/highlight/styles/default.css">
    <script src="htmlbook/highlight/highlight.pack.js"></script> <!-- http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html#language-names-and-aliases -->
    <script>hljs.initHighlightingOnLoad();</script>

    <link rel="stylesheet" type="text/css" href="htmlbook/book.css" />
  </head>

<body onload="loadChapter('manipulation');">

<div data-type="titlepage" pdf="no">
  <header>
    <h1><a href="index.html" style="text-decoration:none;">Robotic Manipulation</a></h1>
    <p data-type="subtitle">Perception, Planning, and Control</p> 
    <p style="font-size: 18px;"><a href="http://people.csail.mit.edu/russt/">Russ Tedrake</a></p>
    <p style="font-size: 14px; text-align: right;"> 
      &copy; Russ Tedrake, 2020-2023<br/>
      Last modified <span id="last_modified"></span>.</br>
      <script>
      var d = new Date(document.lastModified);
      document.getElementById("last_modified").innerHTML = d.getFullYear() + "-" + (d.getMonth()+1) + "-" + d.getDate();</script>
      <a href="misc.html">How to cite these notes, use annotations, and give feedback.</a><br/>
    </p>
  </header>
</div>

<p pdf="no"><b>Note:</b> These are working notes used for <a
href="http://manipulation.csail.mit.edu/Fall2023/">a course being taught
at MIT</a>. They will be updated throughout the Fall 2023 semester.  <!-- <a 
href="https://www.youtube.com/channel/UChfUOAhz7ynELF-s_1LPpWg">Lecture  videos are available on YouTube</a>.--></p> 

<table style="width:100%;" pdf="no"><tr style="width:100%">
  <td style="width:33%;text-align:left;"><a class="previous_chapter" href=environments.html>Previous Chapter</a></td>
  <td style="width:33%;text-align:center;"><a href=index.html>Table of contents</a></td>
  <td style="width:33%;text-align:right;"><a class="next_chapter" href=misc.html>Next Chapter</a></td>
</tr></table>

<script type="text/javascript">document.write(notebook_header('station'))
</script>
<!-- EVERYTHING ABOVE THIS LINE IS OVERWRITTEN BY THE INSTALL SCRIPT -->
<chapter class="appendix" style="counter-reset: chapter 2"><h1>Setting up your own "Manipulation Station"</h1>

  <p>Simulation is an extremely powerful tool, and the fact that we can give it away freely makes it a powerful equalizer.  Just a few years ago, nobody believed that you could develop a manipulation system in simulation and expect it to work in reality.  Nowadays, though, we are seeing consistent evidence that our simulation fidelity is high enough that if can achieve <i>robust</i> performance in simulation, then we are optimistic that it can transfer to reality.</p>

  <p>Of course, there is no substitute to watching your ideas/code bring life to a real physical robot.  The goal of this chapter is to help commoditize the robot hardware infrastructure, to the extent possible, by proving the bill of materials, the low-level drivers, and basic setup instructions to get you up and running with your very own manipulation station.</p>

  <section><h1>Message Passing</h1>
  
    <p><drake></drake> supports multiple message passing subsystems (including ROS1), and for the most part I have no strong opinions about what you should use.  We use <a href="https://lcm-proj.github.io/">LCM</a> for this class because (1) it is lightweight as a dependency (it would be very painful/restrictive to have ROS as a mandatory dependency for <drake></drake>) and (2) we prefer multicast UDP to tcp/ip for the lowest level communications to/from the robot.</p>

    <p>As a result, the primary drivers we list/provide below are based on LCM.  I'll try to point to ROS equivalents when possible.  If you already have an established ROS workflow and still want to use our drivers, then it is also possible to use simple lcm2ros/ros2lcm "bridge" executables <todo>point to some code</todo>to e.g. publish the LCM messages on a ROS topic (for logging, etc).</p>

  </section>

  <section><h1>Kuka LBR iiwa + Schunk WSG Gripper</h1>

    <p>We have made extensive use of both the iiwa7 R800 and the iiwa14 R820; <drake></drake> provides URDFs for both models and the drivers should work for either.  We use the iiwa7 for the labs in this course because it is slightly smaller and we do not need the end-effector payload.</p>

    <ul>
      <li><a href="https://github.com/RobotLocomotion/drake-iiwa-driver">IIWA LCM driver</a></li>
    </ul>

    <p>We've been quite happy with the Schunk WSG 50 gripper as a reliable and accurate two-fingered gripper solution.</p>

    <ul>
      <li><a href="https://github.com/RobotLocomotion/drake-schunk-driver">Schunk LCM driver</a></li>
    </ul>

    <p>Note: We are evaluating the Franka Panda as an alternative platform (and are likely to provide drivers for it here soon).</p>

  </section>

  <section><h1>Franka Panda</h1>

    <p>The Franka Panda series of robots are a very popular iiwa alternative.
    We use a driver that communicates with it directly over LCM. </p>

    <ul>
      <li><a
      href="http://github.com/RobotLocomotion/drake-franka-driver">Franka Panda
      driver</a></li>
    </ul>

    <p><a href="https://github.com/RobotLocomotion/drake-ros">Using the ROS
    drivers directly</a> is certainly possible, too.</p>

  </section>

  <section><h1>Intel Realsense D415 Depth Cameras</h1>

    <p>The D415 has been the camera of choice because of it's relatively good
    minimum range and due to the fact that multiple cameras do not interfere
    with each other when viewing the same scene.</p>

    <ul>
      <li><a
      href="https://github.com/RobotLocomotion/realsense2-lcm-driver">LCM
      Driver</a></li>
      <li><a
      href="https://github.com/ToyotaResearchInstitute/handical">Camera
      calibration toolbox</a>.</li>
    </ul>


  </section>

</chapter>
<!-- EVERYTHING BELOW THIS LINE IS OVERWRITTEN BY THE INSTALL SCRIPT -->

<div id="references"></div>

<table style="width:100%;" pdf="no"><tr style="width:100%">
  <td style="width:33%;text-align:left;"><a class="previous_chapter" href=environments.html>Previous Chapter</a></td>
  <td style="width:33%;text-align:center;"><a href=index.html>Table of contents</a></td>
  <td style="width:33%;text-align:right;"><a class="next_chapter" href=misc.html>Next Chapter</a></td>
</tr></table>

<div id="footer" pdf="no">
  <hr>
  <table style="width:100%;">
    <tr><td><a href="https://accessibility.mit.edu/">Accessibility</a></td><td style="text-align:right">&copy; Russ
      Tedrake, 2023</td></tr>
  </table>
</div>


</body>
</html>
